<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

    <script>
    
        var arr = [{name: '王宝宝1'},
                    {name: '王宝宝2'}, 
                    {name: '王宝宝3'}, 
                    {name: '王宝宝4'}]
    
        // 遍历数组 为 数组中的对象添加方法
        for(var i = 0; i < arr.length; i++) {
            /* 匿名表达式函数*/ 
            arr[i].sayHi = function () {
                /*
                    循环为数组里面的对象添加方法， 循环计数器 i 最终会停在 循环完成之后的数值 不会再变化了
                    而添加的这个方法中 使用到了 i 这个也将不在发生变化, 如果 i 不发生变化， 那么 i 当做 arr 的下标也不会 取到 arr 数组中 对应的 元素，
                */ 
                // console.log(arr[i].name + ':Hello');


                /*
                    this 指向函数的调用者， 谁使这个函数执行
                */ 
                console.log(this.name + ':Hello');
                
            }

            // console.log(arr[i].name);
            console.log(arr[i]);
        }


        // 再遍历 arr 数组 执行 执行数组对象中的 sayHi 方法
        // for(var i = 0; i < arr.length; i++) {
        //     arr[i].sayHi();
        // }

        for(var j = 0; j < arr.length; j++) {
            arr[j].sayHi();
        }
    
    
    </script>
    
</body>
</html>